import axios from 'axios'
import { ElMessage } from 'element-plus'
// import { useRouter, RouterView,useRoute } from "vue-router";
import router from "@/router/index"
import i18n from "@/lang/index";
// 创建一个 axios 实例
const token=JSON.parse(localStorage.getItem('userId')|| '{}')
console.log(token)
const service = axios.create({
	baseURL:import.meta.env.VITE_BASE_URL, // 所有的请求地址前缀部分
	timeout: 60000, // 请求超时时间毫秒
	withCredentials: true, // 异步请求携带cookie
	headers: {
		// 设置后端需要的传参类型
		'Content-Type': 'application/json',
		// 'Authorization':token?token.token:'',
		'X-Requested-With': 'XMLHttpRequest',
		"languagetype":i18n.global.locale.value
	},
})

// 添加请求拦截器
service.interceptors.response.use((res) => {
	console.log(res,999999999999)
    // 对请求得到的响应做一些处理
    if (res.status == 200) {
        // 状态码是200表明请求正常，可以返回请求到的数据也可以做一些其他事情
        return res
    } else {
		console.log(232222)
		if(res.status==401){
			localStorage.removeItem('userId')
			ElMessage.error('登录失效，重新登录')
			
			router.replace('/login')
			
		}
		console.log(111111111111)
        // 状态码不是200说明请求可能出错
        // ElMessage.error(NETWORK_ERROR)
        // return Promise.reject(NETWORK_ERROR)
        // 这里的封装不完善，直接抛出异常会导致页面不能正常提醒用户，先这样返回，以后修改
        return res
    }
})

// 添加响应拦截器
service.interceptors.response.use(
	function (response) {
		// 2xx 范围内的状态码都会触发该函数。
		// 对响应数据做点什么
		// dataAxios 是 axios 返回数据中的 data
		const dataAxios = response.data
		// 这个状态码是和后端约定的
		const code = dataAxios.reset
		return dataAxios
	},
	function (error) {

		if(error.response.status==401&&localStorage.getItem('userId')){
			localStorage.removeItem('userId')
			ElMessage.error('登录失效，重新登录')
			router.push('/login')
		}
		// 超出 2xx 范围的状态码都会触发该函数。
		// 对响应错误做点什么
		return Promise.reject(error)
	}
)

service.interceptors.request.use((config:any)=>{
    const token =JSON.parse(localStorage.getItem('userId')|| '{}')
    if (token) {
        config.headers.Authorization = token?token.token:'';
    }
    return config;
});

export default service